A distributed computing system is one in which geographically distributed users and resources are connected in a transparent, open manner. Distributed computing systems offer many benefits, such as survivability, robustness and reliability. That is, a distributed computing system will not necessarily fail just because one component of the system fails. Moreover, distributed computing systems are fairly easy to scale.
In some cases, distributed computing systems are agent-based. That is, some decision making processes are delegated to “agents” (autonomous or semi-autonomous software programs) that are deployed throughout the system. These agents are tasked with specific goals or missions, such as monitoring and controlling devices or resources to which they are assigned.
One drawback to implementing an agent-based architecture in a distributed computing system is the difficulty in scaling the system. For example, for larger distributed computing systems requiring greater numbers of agents, it is difficult to coordinate the activities of the agents. Monitoring and troubleshooting in the distributed computing system thus becomes a complicated task.
Thus, there is a need in the art for a method and apparatus for layering software agents in a distributed computing system.